"""
数字阶乘

145是个有趣的数，因为有如下关系：
    1! + 4! + 5! = 1 + 24 + 120 = 145。
找出所有各位数字的阶乘和等于其本身的数，并求它们的和。[注意： 1! = 1和2! = 2，由于不是和的形式，所以它们并不在此范围内]。

"""

def factorial(n):
    if n==0 or n==1:
        return 1
    else:
        return (n*factorial(n-1))

result=0
for i in range(10,8*factorial(9)):
    n=0
    s=str(i)
    for j in s:
        n+=factorial(int(j))
    if n==i:
        result+=i
print(result)





# an_dict={'0':1,'1':1,'2':2,'3':6,'4':24,'5':120,'6':720,'7':5040,'8':40320,'9':362880}
# hu=0
# for i in range(10,8*362880):
#     ji=list(str(i))
#     jde=0
#     for ff in ji:
#         jde+=an_dict[ff]
#     if jde==i:#数字阶乘的和等于数
#         hu+=i
#         print('满足条件的数有：%d'%i)
# print(hu)
# 答案：满足条件的数有：145
# 满足条件的数有：40585
# 和为：40730
